// This example shows how to work with Software Tolbox TOP Server 5 Alarms and Events. // Use simdemo_WithA&E.opf configuration file and write a value above 1000 to Channel1.Device1.Tag1 or Channel1.Device1.Tag2. // // Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . // OPC client and subscriber examples in C# on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-CSharp . // Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own // a commercial license in order to use Online Forums, and we reply to every post. using System; using System.Diagnostics; using System.Threading; using OpcLabs.EasyOpc.AlarmsAndEvents; using OpcLabs.EasyOpc.AlarmsAndEvents.AddressSpace; using OpcLabs.EasyOpc.AlarmsAndEvents.OperationModel; using OpcLabs.EasyOpc.OperationModel; namespace DocExamples.AlarmsAndEvents.SWToolbox { class TOPServer_AE { public static void Main1() { // Instantiate the client object. var client = new EasyAEClient(); // Browse for some areas and sources AENodeElementCollection areaElements; try { areaElements = client.BrowseAreas("", "SWToolbox.TOPServer_AE.V5", ""); } catch (OpcException opcException) { Console.WriteLine("*** Failure: {0}", opcException.GetBaseException().Message); return; } foreach (AENodeElement areaElement in areaElements) { Debug.Assert(!(areaElement is null)); Debug.Assert(!(areaElement.QualifiedName is null)); Console.WriteLine("areaElements[\"{0}\"]:", areaElement.Name); Console.WriteLine(" .QualifiedName: {0}", areaElement.QualifiedName); AENodeElementCollection sourceElements = client.BrowseSources("", "SWToolbox.TOPServer_AE.V5", areaElement.QualifiedName); foreach (AENodeElement sourceElement in sourceElements) { Debug.Assert(sourceElement != null); Console.WriteLine(" sourceElements[\"{0}\"]:", sourceElement.Name); Console.WriteLine(" .QualifiedName: {0}", sourceElement.QualifiedName); } } // Query for event categories AECategoryElementCollection categoryElements; try { categoryElements = client.QueryEventCategories("", "SWToolbox.TOPServer_AE.V5"); } catch (OpcException opcException) { Console.WriteLine("*** Failure: {0}", opcException.GetBaseException().Message); return; } foreach (AECategoryElement categoryElement in categoryElements) { Debug.Assert(categoryElement != null); Console.WriteLine("CategoryElements[\"{0}\"].Description: {1}", categoryElement.CategoryId, categoryElement.Description); } // Subscribe to events, wait, and unsubscribe var eventHandler = new EasyAENotificationEventHandler(client_Notification); client.Notification += eventHandler; int handle = client.SubscribeEvents("", "SWToolbox.TOPServer_AE.V5", 1000); Console.WriteLine("Processing event notifications for 1 minute..."); Thread.Sleep(60 * 1000); client.UnsubscribeEvents(handle); } // Notification event handler static void client_Notification(object sender, EasyAENotificationEventArgs e) { if (!(e.Exception is null)) Console.WriteLine("e.Exception.Message: {0}", e.Exception.Message); if (!(e.Exception is null)) Console.WriteLine("e.Exception.Source: {0}", e.Exception.Source); Console.WriteLine("e.Refresh: {0}", e.Refresh); Console.WriteLine("e.RefreshComplete: {0}", e.RefreshComplete); if (!(e.EventData is null)) Console.WriteLine("e.EventData.QualifiedSourceName: {0}", e.EventData.QualifiedSourceName); if (!(e.EventData is null)) Console.WriteLine("e.EventData.Time: {0}", e.EventData.Time); if (!(e.EventData is null)) Console.WriteLine("e.EventData.Message: {0}", e.EventData.Message); if (!(e.EventData is null)) Console.WriteLine("e.EventData.EventType: {0}", e.EventData.EventType); if (!(e.EventData is null)) Console.WriteLine("e.EventData.CategoryId: {0}", e.EventData.CategoryId); if (!(e.EventData is null)) Console.WriteLine("e.EventData.Severity: {0}", e.EventData.Severity); if (!(e.EventData is null)) Console.WriteLine("e.EventData.ConditionName: {0}", e.EventData.ConditionName); if (!(e.EventData is null)) Console.WriteLine("e.EventData.SubconditionName: {0}", e.EventData.SubconditionName); if (!(e.EventData is null)) Console.WriteLine("e.EventData.Enabled: {0}", e.EventData.Enabled); if (!(e.EventData is null)) Console.WriteLine("e.EventData.Active: {0}", e.EventData.Active); if (!(e.EventData is null)) Console.WriteLine("e.EventData.Acknowledged: {0}", e.EventData.Acknowledged); if (!(e.EventData is null)) Console.WriteLine("e.EventData.Quality: {0}", e.EventData.Quality); if (!(e.EventData is null)) Console.WriteLine("e.EventData.AcknowledgeRequired: {0}", e.EventData.AcknowledgeRequired); if (!(e.EventData is null)) Console.WriteLine("e.EventData.ActiveTime: {0}", e.EventData.ActiveTime); } } }
' This example shows how to work with Software Tolbox TOP Server 5 Alarms and Events. ' Use simdemo_WithA&E.opf configuration file and write a value above 1000 to Channel1.Device1.Tag1 or Channel1.Device1.Tag2. ' ' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . ' OPC client and subscriber examples in VB.NET on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-VBNET . ' Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own ' a commercial license in order to use Online Forums, and we reply to every post. Imports System.Threading Imports OpcLabs.EasyOpc.AlarmsAndEvents Imports OpcLabs.EasyOpc.AlarmsAndEvents.AddressSpace Imports OpcLabs.EasyOpc.AlarmsAndEvents.OperationModel Imports OpcLabs.EasyOpc.OperationModel Namespace AlarmsAndEvents.SWToolbox Friend Class TOPServer_AE Public Shared Sub Main1() Dim client = New EasyAEClient() ' Browse for some areas and sources Dim areaElements As AENodeElementCollection Try areaElements = client.BrowseAreas("", "SWToolbox.TOPServer_AE.V5", "") Catch opcException As OpcException Console.WriteLine("*** Failure: {0}", opcException.GetBaseException().Message) Exit Sub End Try For Each areaElement As AENodeElement In areaElements Debug.Assert(areaElement IsNot Nothing) Debug.Assert(areaElement.QualifiedName IsNot Nothing) Console.WriteLine("areaElements[""{0}""]:", areaElement.Name) Console.WriteLine(" .QualifiedName: {0}", areaElement.QualifiedName) Dim sourceElements As AENodeElementCollection = client.BrowseSources("", "SWToolbox.TOPServer_AE.V5", areaElement.QualifiedName) For Each sourceElement As AENodeElement In sourceElements Debug.Assert(sourceElement IsNot Nothing) Console.WriteLine(" sourceElements[""{0}""]:", sourceElement.Name) Console.WriteLine(" .QualifiedName: {0}", sourceElement.QualifiedName) Next sourceElement Next areaElement ' Query for event categories Dim categoryElements As AECategoryElementCollection Try categoryElements = client.QueryEventCategories("", "SWToolbox.TOPServer_AE.V5") Catch opcException As OpcException Console.WriteLine("*** Failure: {0}", opcException.GetBaseException().Message) Exit Sub End Try For Each categoryElement As AECategoryElement In categoryElements Debug.Assert(categoryElement IsNot Nothing) Console.WriteLine("CategoryElements[""{0}""].Description: {1}", categoryElement.CategoryId, categoryElement.Description) Next categoryElement ' Subscribe to events, wait, and unsubscribe Dim eventHandler = New EasyAENotificationEventHandler(AddressOf client_Notification) AddHandler client.Notification, eventHandler Dim handle As Integer = client.SubscribeEvents("", "SWToolbox.TOPServer_AE.V5", 1000) Console.WriteLine("Processing event notifications for 1 minute...") Thread.Sleep(60 * 1000) client.UnsubscribeEvents(handle) End Sub ' Notification event handler Private Shared Sub client_Notification(ByVal sender As Object, ByVal e As EasyAENotificationEventArgs) If e.Exception IsNot Nothing Then Console.WriteLine("e.Exception.Message: {0}", e.Exception.Message) End If If e.Exception IsNot Nothing Then Console.WriteLine("e.Exception.Source: {0}", e.Exception.Source) End If Console.WriteLine("e.Refresh: {0}", e.Refresh) Console.WriteLine("e.RefreshComplete: {0}", e.RefreshComplete) If e.EventData IsNot Nothing Then Console.WriteLine("e.EventData.QualifiedSourceName: {0}", e.EventData.QualifiedSourceName) End If If e.EventData IsNot Nothing Then Console.WriteLine("e.EventData.Time: {0}", e.EventData.Time) End If If e.EventData IsNot Nothing Then Console.WriteLine("e.EventData.Message: {0}", e.EventData.Message) End If If e.EventData IsNot Nothing Then Console.WriteLine("e.EventData.EventType: {0}", e.EventData.EventType) End If If e.EventData IsNot Nothing Then Console.WriteLine("e.EventData.CategoryId: {0}", e.EventData.CategoryId) End If If e.EventData IsNot Nothing Then Console.WriteLine("e.EventData.Severity: {0}", e.EventData.Severity) End If If e.EventData IsNot Nothing Then Console.WriteLine("e.EventData.ConditionName: {0}", e.EventData.ConditionName) End If If e.EventData IsNot Nothing Then Console.WriteLine("e.EventData.SubconditionName: {0}", e.EventData.SubconditionName) End If If e.EventData IsNot Nothing Then Console.WriteLine("e.EventData.Enabled: {0}", e.EventData.Enabled) End If If e.EventData IsNot Nothing Then Console.WriteLine("e.EventData.Active: {0}", e.EventData.Active) End If If e.EventData IsNot Nothing Then Console.WriteLine("e.EventData.Acknowledged: {0}", e.EventData.Acknowledged) End If If e.EventData IsNot Nothing Then Console.WriteLine("e.EventData.Quality: {0}", e.EventData.Quality) End If If e.EventData IsNot Nothing Then Console.WriteLine("e.EventData.AcknowledgeRequired: {0}", e.EventData.AcknowledgeRequired) End If If e.EventData IsNot Nothing Then Console.WriteLine("e.EventData.ActiveTime: {0}", e.EventData.ActiveTime) End If End Sub End Class End Namespace
Rem This example shows how to work with Software Toolbox TOP Server 5 Alarms and Events. Rem Use simdemo_WithA&E.opf configuration file and write a value above 1000 to Channel1.Device1.Tag1 or Channel1.Device1.Tag2. Rem Rem Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Rem OPC client and subscriber examples in VBScript on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-VBScript . Rem Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own Rem a commercial license in order to use Online Forums, and we reply to every post. Option Explicit Const AEEventTypes_All = 7 'Dim progID: progID = "Kepware.KEPServerEX_AE.V5" Dim progID: progID = "SWToolbox.TOPServer_AE.V5" Dim ServerDescriptor: Set ServerDescriptor = CreateObject("OpcLabs.EasyOpc.ServerDescriptor") ServerDescriptor.ServerClass = progID Dim Client: Set Client = CreateObject("OpcLabs.EasyOpc.AlarmsAndEvents.EasyAEClient") Rem Browse for some areas and sources On Error Resume Next Dim AreaElements: Set AreaElements = Client.BrowseAreas("", progID, "") If Err.Number <> 0 Then WScript.Echo "*** Failure: " & Err.Source & ": " & Err.Description WScript.Quit End If On Error Goto 0 Dim AreaElement: For Each AreaElement In AreaElements WScript.Echo "AreaElements(""" & AreaElement.Name & """):" With AreaElement WScript.Echo Space(4) & ".QualifiedName: " & .QualifiedName End With On Error Resume Next Dim SourceElements: Set SourceElements = Client.BrowseSources("", progID, AreaElement.QualifiedName) If Err.Number <> 0 Then WScript.Echo "*** Failure: " & Err.Source & ": " & Err.Description WScript.Quit End If On Error Goto 0 Dim SourceElement: For Each SourceElement In SourceElements WScript.Echo Space(4) & "SourceElement(""" & SourceElement.Name & """):" With SourceElement WScript.Echo Space(8) & ".QualifiedName: " & .QualifiedName End With Next Next Rem Query for event categories On Error Resume Next Dim CategoryElements: Set CategoryElements = Client.QueryEventCategories(ServerDescriptor, AEEventTypes_All) If Err.Number <> 0 Then WScript.Echo "*** Failure: " & Err.Source & ": " & Err.Description WScript.Quit End If On Error Goto 0 Dim CategoryElement: For Each CategoryElement In CategoryElements WScript.Echo "CategoryElements(" & CategoryElement.CategoryId & ").Description: " & CategoryElement.Description Next Rem Subscribe to events, wait, and unsubscribe WScript.ConnectObject Client, "Client_" Dim SubscriptionParameters: Set SubscriptionParameters = CreateObject("OpcLabs.EasyOpc.AlarmsAndEvents.AESubscriptionParameters") SubscriptionParameters.NotificationRate = 1000 Dim handle: handle = Client.SubscribeEvents(ServerDescriptor, SubscriptionParameters, True, Nothing) WScript.Echo "Processing event notifications for 1 minute..." WScript.Sleep 60*1000 Client.UnsubscribeEvents handle Rem Notification event handler Sub Client_Notification(Sender, e) On Error Resume Next WScript.Echo WScript.Echo "e.Exception.Message: " & e.Exception.Message WScript.Echo "e.Exception.Source: " & e.Exception.Source WScript.Echo "e.Exception.ErrorCode: " & e.Exception.ErrorCode WScript.Echo "e.Arguments.State: " & e.Arguments.State WScript.Echo "e.Arguments.ServerDescriptor.MachineName: " & e.Arguments.ServerDescriptor.MachineName WScript.Echo "e.Arguments.ServerDescriptor.ServerClass: " & e.Arguments.ServerDescriptor.ServerClass WScript.Echo "e.Arguments.SubscriptionParameters.Active: " & e.Arguments.SubscriptionParameters.Active WScript.Echo "e.Arguments.SubscriptionParameters.NotificationRate: " & e.Arguments.SubscriptionParameters.NotificationRate Rem IMPROVE: Display Arguments.SubscriptionParameters.Filter details WScript.Echo "e.Arguments.SubscriptionParameters.Filter: " & e.Arguments.SubscriptionParameters.Filter Rem IMPROVE: Display Arguments.SubscriptionParameters.ReturnedAttributesByCategory details WScript.Echo "e.Arguments.SubscriptionParameters.ReturnedAttributesByCategory: " & e.Arguments.SubscriptionParameters.ReturnedAttributesByCategory WScript.Echo "e.Refresh: " & e.Refresh WScript.Echo "e.RefreshComplete: " & e.RefreshComplete WScript.Echo "e.EnabledChanged: " & e.EnabledChanged WScript.Echo "e.ActiveChanged: " & e.ActiveChanged WScript.Echo "e.AcknowledgedChanged: " & e.AcknowledgedChanged WScript.Echo "e.QualityChanged: " & e.QualityChanged WScript.Echo "e.SeverityChanged: " & e.SeverityChanged WScript.Echo "e.SubconditionChanged: " & e.SubconditionChanged WScript.Echo "e.MessageChanged: " & e.MessageChanged WScript.Echo "e.AttributeChanged: " & e.AttributeChanged WScript.Echo "e.EventData.QualifiedSourceName: " & e.EventData.QualifiedSourceName WScript.Echo "e.EventData.Time: " & e.EventData.Time WScript.Echo "e.EventData.TimeLocal: " & e.EventData.TimeLocal WScript.Echo "e.EventData.Message: " & e.EventData.Message WScript.Echo "e.EventData.EventType: " & e.EventData.EventType WScript.Echo "e.EventData.CategoryId: " & e.EventData.CategoryId WScript.Echo "e.EventData.Severity: " & e.EventData.Severity Rem IMPROVE: Display EventData.AttributeValues details WScript.Echo "e.EventData.AttributeValues: " & e.EventData.AttributeValues WScript.Echo "e.EventData.ConditionName: " & e.EventData.ConditionName WScript.Echo "e.EventData.SubconditionName: " & e.EventData.SubconditionName WScript.Echo "e.EventData.Enabled: " & e.EventData.Enabled WScript.Echo "e.EventData.Active: " & e.EventData.Active WScript.Echo "e.EventData.Acknowledged: " & e.EventData.Acknowledged WScript.Echo "e.EventData.Quality: " & e.EventData.Quality WScript.Echo "e.EventData.AcknowledgeRequired: " & e.EventData.AcknowledgeRequired WScript.Echo "e.EventData.ActiveTime: " & e.EventData.ActiveTime WScript.Echo "e.EventData.ActiveTimeLocal: " & e.EventData.ActiveTimeLocal WScript.Echo "e.EventData.Cookie: " & e.EventData.Cookie WScript.Echo "e.EventData.ActorId: " & e.EventData.ActorId End Sub
Copyright © 2004-2024 CODE Consulting and Development, s.r.o., Plzen. All rights reserved. Web page: www.opclabs.com
Documentation Home, Send Feedback. Resources: Knowledge Base, Product Downloads. Technical support: Online Forums, FAQ.Missing some example? Ask us for it on our Online Forums! You do not have to own a commercial license in order to use Online Forums, and we reply to every post.